package com.niu.service.impl;

import com.niu.myaliyunstarter.demos.utils.MyAliYunOssUtils;
import com.niu.service.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * @Author 鹅鹅鹅
 * @Version 1.0.0
 * @Date 2025/7/16 18:03
 * @Description 文件上传
 */
@Service
public class FileServiceImpl implements FileService {

    // 文件上传工具类
    @Autowired
    private MyAliYunOssUtils myAliYunOssUtils;

    @Override
    public String saveFileToLocal(MultipartFile file) throws IOException {

        /**
         * 文件上传到本地
         * 1. 获取原始文件的后缀名
         * 2. 避免重复文件名, 随机生成文件名
         * 3. 将文件上传到本地
         */
        // 1. 获取原始文件的后缀名
        // 两种方式, 第一种获取文件名最后一个点的索引, 从索引位置截取到最后
        // 第二种使用.截取文件名, 取最后一个元素
        String originalFilename = file.getOriginalFilename();
        String[] arr = originalFilename.split("\\.");
        String ext = arr[arr.length - 1];
        // 2. 避免重复文件名, 随机生成文件名
        String newFilename = UUID.randomUUID().toString() + "." + ext;
        // 选择保存的路径
        File fileAddress = new File("D://a//" + newFilename);
        // 3. 将文件上传到本地
        file.transferTo(fileAddress);

        // 返回文件的绝对路径
        return fileAddress.getAbsolutePath();
    }

    @Override
    public String saveFileToOss(MultipartFile file) {
        /**
         * 文件上传到OSS云存储
         */
        String url = myAliYunOssUtils.uploadToOss(file);
        System.out.println(url);
        return url;
    }
}
